# -*- coding: UTF-8  -*-
import sys

#加入源代码根目录到当前py路径，用于调用commons包下的模块
sys.path.append('/data/diarpy_co/diarpyProject/src')
import commons.dbutil as db
import commons.util as util

'''
连接数据库的参数，在 getconn() 时读取。
'''
conn_cfg = {    "host":"localhost",         # 数据库服务器地址
                "user":"admin",             # 数据库用户名
                "passwd":"***",             # 数据库密码
                "db":"diarpy"               # 数据库的名称
            }

'''
数据库表的定义信息，执行 SQL 操作时需读取。
'''
tb_diary = {    "name":     "diary",                # 数据库表的名称
                "fields":   "id title content",     # 表的字段列表(用空格间隔)
                "idseq":    "diary_id_seq",         # PG数据表特有的自增ID序列名
                "format":   "dss",                  # 表的各字段的数据类型 (d表示int, s表示string)
                "defaults": (0, '', '')             # 各个字段的默认值
            }

            
# 测试快速插入一条记录
def testInsert():
    
    conn = db.getconn(conn_cfg)

    obj = util.getObj()
    obj.title = "a title"
    obj.content = "some contents."

    db.create(conn, tb_diary, obj)
    db.submit(conn)


# 测试快速修改一条记录
def testUpdate():

    conn = db.getconn(conn_cfg)
    obj = util.getObj()

    obj.id = 7
    obj.title = "a xx title"
    obj.content = "some xx contents."
    
    db.save(conn, tb_diary, obj)
    db.submit(conn)


# 测试快速删除一条记录
def testDelete():

    conn = db.getconn(conn_cfg)
    
    db.delete(conn, tb_diary, 9)
    db.submit(conn)


# 测试快速读取一条记录
def testRead():

    conn = db.getconn(conn_cfg)

    obj = db.read(conn, tb_diary, 7, True)
    print obj.title, obj.content

    db.submit(conn)


# 测试一个SQL查询
def testQuery():
    
    SQL = '''
        SELECT id as A, title as B from diary WHERE id > %d AND id < %d
    '''
    conn = db.getconn(conn_cfg)
    
    results = db.query(conn, SQL, params=[7,11], fields="A B")
    db.close(conn)

    #输出查询的结果列表
    for obj in results:
        print obj.A, obj.B

